package com.fulihui.usercore.dto;

import com.fulihui.usercore.enums.UserGenderEnum;
import com.fulihui.usercore.enums.UserStateEnum;
import lombok.Getter;
import lombok.Setter;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 用户详情
 * Created by Willard.Hu on 2016/5/16.
 */
@Getter
@Setter
public class UserDTO extends AbstractDateDTO {
    private static final long serialVersionUID = 7956225771406713188L;

    /** 会员唯一标识 */
    private String              userId;
    /** 客户唯一标识 */
    private String              customerId;
    /** 登录账号 */
    private String              loginId;
    /** 用户身份值，使用UserIdentity.has(..)方法判断是否有身份 */
    private int                 mergedIdentity;
    /** 用户昵称 */
    private String              nickname;
    /** 生日 yyyy-mm-dd */
    private String              birthday;
    /** 头像 */
    private String              headImg;
    /** 登录类型 {@link com.fulihui.usercore.enums.UserRegisterTypeEnum} */
    private String              registerType;
    /** 注册来源 */
    private String              registerSource;
    /** 手机 */
    private String              mobileNo;
    /** 身份证 */
    private String              idcard;
    /** 手机号是否已验证 */
    private Boolean             mobileVerified;
    /** 身份证是否已验证 */
    private Boolean             idcardVerified;
    /** 邮箱 */
    private String              email;
    /** 邮箱是否已验证 */
    private Boolean             emailVerified;
    /** 电话 */
    private String              telephone;
    /** 性别 {@link com.fulihui.usercore.enums.UserGenderEnum} */
    private String              gender;
    /** 角色代码 */
    private String              roleCode;
    /** 角色名 */
    private String              roleName;
    /** 用户状态 {@link com.fulihui.usercore.enums.UserStateEnum} */
    private String              state;
    /** 备注 */
    private String              memo;
    /** 省份名称 */
    private String              province;
    /** 城市名称 */
    private String              city;
    /** 扩展信息 */
    private Map<String, Object> extInfo;
    /** 标签主键集合 */
    private List<String>        tagIds;
    /** 用户使用过的产品集 */
    private List<String>        usedProducts;
    /** 最后登入时间 */
    private Long                lastLogin;
    /** 用户使用的耳朵资讯最新版本 */
    private String              erduoVersion;

    public UserDTO() {
        gender = UserGenderEnum.UNKNOW.getCode();
        state = UserStateEnum.NOMAL.getCode();
    }

    public void lastLogin(Date d) {
        this.lastLogin = DateConv.d2s(d);
    }

    public Date lastLogin() {
        return DateConv.s2d(this.lastLogin);
    }
}
